/** 
 * Date:2014年8月7日下午5:06:42 
 * Copyright (c) 2014, YIMAFU Co., Ltd. All right.
 * Author: hujl@weishequan.com
 */
package cn.com.qingz.modules.user.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;

import cn.com.qingz.modules.user.model.Resource;
import cn.com.qingz.modules.user.model.Role;
import cn.com.qingz.modules.user.model.User;
import cn.com.qingz.modules.user.vo.UserCondition;
import cn.com.qingz.modules.user.vo.UserPrivilegeVo;

public interface UserMapper {

    /**
     * 用户注册
     * @param user
     * @return
     */

    void register(User user);

    int countUser(@Param("username") String username);

    /**
     * 用户登陆
     * @param user
     * @return
     */
    User loginUser(User user);

    /**
     * 根据Id查询用户
     * @param userid
     * @return
     */
    User getUser(Long userid);

    /**
     * 查询角色权限
     * @param 角色名称
     * @return
     */
    String getPermissionByRole(String roleName);

    /**
     * 根据resIds 查询权限资源
     * @param resIds
     * @return
     */
    List<Resource> getPermissionByIds(List<Long> resIds);

    /**
     * 查询用户角色Ids
     * @param logincode 用户名
     * @return role_ids
     */
    String getRoleByLoginCode(String logincode);

    /**
     * 根据RoleIds 查询角色
     * @param roleIds
     * @return
     */
    List<Role> getRoleByIds(List<Long> roleIds);

    /**
     * 修改用户基本信息
     * @param user
     */
    void doUpdateUserInfo(User user);

    public PageList<UserPrivilegeVo> queryUserPage(UserCondition condition, PageBounds pageBounds);

    public void updateUserStatus(@Param("ids") List<String> ids, @Param("status") String status);

    @Select("select * from sys_role where id = #{id}")
    @Update("update sys_role set dis = #{asdf} , version = version +1 where id = #{id} AND version = version")
    public List<Role> findRoleById(@Param("id") String id);

    @Select("select * from HD_User")
    public List<Map<String, Object>> test();
}
